package 面试今典150;

public class 今典6_189轮转数组 {
    public void rotate(int[] nums, int k) {
        /*
        思路：
        1，先反转全部的链表,k = 2 答案：4 5 1 2 3
        2，当k是数组的一倍以上，就只是反转 k % nums.length
        如：1 2 3 4 5  => 5 4 3 2 1
        3，反转0到k % num.length 的位置 4 5 3 2 1
        4,反转 k % num.length 到 num.length 的位置 4 5 1 2 3，得到结果
         */
        int len = nums.length;
        k = k % len;
        reverse(nums,0,len-1);
        reverse(nums,0,k-1);
        reverse(nums,k,len-1);

    }
    public void reverse(int[] arr,int start ,int end){
        int tem;
        while (start < end){
            tem = arr[start];
            arr[start] = arr[end];
            arr[end] = tem;
            start++;
            end--;
        }
    }
}
